//
//  SubFunc.swift
//  SubFunc
//
//  Created by 工作 on 2025/4/18.
//

import AVFoundation
import Foundation
import SwiftUI

/// 生成指定范围内的随机整数
/// - Parameters:
///   - inMin: 最小值
///   - inMax: 最大值
/// - Returns: 随机整数
public func randomInt(_ inMin: Int, _ inMax: Int) -> Int {
    // 确保 min 和 max 的顺序正确
    let (min, max) = inMin < inMax ? (inMin, inMax) : (inMax, inMin)
    return Int.random(in: min...max)  // 使用更现代的 `Int.random(in:)` 替代 `arc4random`
}

/// 打开指定的 URL
/// - Parameter urlIn: URL 字符串
public func openUrl(_ urlIn: String) {
    guard let url = URL(string: urlIn) else {
        print("Invalid URL: \(urlIn)")  // 添加错误日志
        return
    }
    // 使用 UIApplication 打开 URL
    UIApplication.shared.open(url, options: [:], completionHandler: nil)
}

/// 使用 AVSpeechSynthesizer 朗读指定文本
/// - Parameters:
///   - synthesizer: 语音合成器
///   - inString: 要朗读的文本
public func speak(synthesizer: AVSpeechSynthesizer, inString: String) {
    let speakRate: Float = 0.57  // 朗读速度，范围为 0.0 到 1.0

    let utterance = AVSpeechUtterance(string: inString)
    utterance.voice = AVSpeechSynthesisVoice(
        identifier: "com.apple.ttsbundle.siri_female_zh-CN_compact")
    utterance.rate = speakRate

    // 延时执行朗读
    delayRun(260) {
        synthesizer.speak(utterance)
    }
}

/// 延时执行指定的闭包
/// - Parameters:
///   - inMillisecond: 延迟时间（毫秒）
///   - inFunction: 要执行的闭包
public func delayRun(_ inMillisecond: Int, inFunction: @escaping () -> Void) {
    DispatchQueue.main.asyncAfter(
        deadline: .now() + .milliseconds(inMillisecond),
        execute: inFunction
    )
}

/// 根据当前的颜色模式返回对应的颜色
/// - Parameters:
///   - cS: 当前的颜色模式（浅色或深色）
///   - l: 浅色模式下的颜色
///   - d: 深色模式下的颜色
/// - Returns: 对应的颜色
public func colorFollowScheme(cS: ColorScheme, l: Color, d: Color) -> Color {
    return cS == .light ? l : d
}
